import { IPSModelSortable } from '../../ipsmodel-sortable';
import { IPSApplicationObject } from '../ipsapplication-object';
import { IPSAppDEAction } from '../dataentity/ipsapp-deaction';
import { IPSAppDEDataSet } from '../dataentity/ipsapp-dedata-set';
import { IPSAppDataEntity } from '../dataentity/ipsapp-data-entity';
import { IPSSysCounter } from '../../control/counter/ipssys-counter';

/**
 *
 * 子接口类型识别属性[]
 * @export
 * @interface IPSAppCounter
 */
export interface IPSAppCounter extends IPSSysCounter, IPSApplicationObject, IPSModelSortable {
  /**
   * 计算应用实体行为
   *
   * @type {IPSAppDEAction}
   */
  getGetPSAppDEAction(): IPSAppDEAction | null;

  /**
   * 计算应用实体行为
   *
   * @type {IPSAppDEAction}
   */
  get getPSAppDEAction(): IPSAppDEAction | null;

  /**
   * 计算应用实体行为（必须存在）
   *
   * @type {IPSAppDEAction}
   */
  getGetPSAppDEActionMust(): IPSAppDEAction;

  /**
   * 计算应用实体数据集
   *
   * @type {IPSAppDEDataSet}
   */
  getGetPSAppDEDataSet(): IPSAppDEDataSet | null;

  /**
   * 计算应用实体数据集
   *
   * @type {IPSAppDEDataSet}
   */
  get getPSAppDEDataSet(): IPSAppDEDataSet | null;

  /**
   * 计算应用实体数据集（必须存在）
   *
   * @type {IPSAppDEDataSet}
   */
  getGetPSAppDEDataSetMust(): IPSAppDEDataSet;

  /**
   * 应用实体对象
   *
   * @type {IPSAppDataEntity}
   */
  getPSAppDataEntity(): IPSAppDataEntity | null;

  /**
   * 应用实体对象
   *
   * @type {IPSAppDataEntity}
   */
  get psAppDataEntity(): IPSAppDataEntity | null;

  /**
   * 应用实体对象（必须存在）
   *
   * @type {IPSAppDataEntity}
   */
  getPSAppDataEntityMust(): IPSAppDataEntity;
}
